package cn.lingyangwl.agile.system.model.entity;

import cn.lingyangwl.agile.model.BasePlusPO;
import cn.lingyangwl.agile.model.constants.ConfigCons;
import cn.lingyangwl.agile.tenant.core.DataIsolation;
import cn.lingyangwl.framework.mybatis.mate.annotations.FieldUniqueConfig;
import cn.lingyangwl.framework.mybatis.mate.enums.SqlConditionTypeEnum;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;

/**
 * 参数配置表 sys_config
 * 
 * @author shenguangyang
 */
@Getter
@Setter
@ToString
@Accessors(chain = true)
@TableName("sys_config")
@FieldUniqueConfig(sqlCondition = SqlConditionTypeEnum.AND)
@DataIsolation(filterTenant = true, tableName = "sys_config")
public class SysConfig extends BasePlusPO {
    private static final long serialVersionUID = 1L;

    public static LambdaQueryWrapper<SysConfig> lqw() {
        return Wrappers.lambdaQuery();
    }

    public static LambdaUpdateWrapper<SysConfig> luw() {
        return Wrappers.lambdaUpdate();
    }

    /** 参数主键 */
    @TableId
    private Long id;

    /** 参数名称 */
    private String configName;

    /** 参数键名 */
    private String configKey;

    /** 组id */
    private Long groupId;

    /** 配置值 */
    private String configValue;

    /** 是否为系统内置, 系统内置的不能被删除 */
    private Boolean sysBuiltIn;

    /**
     * 租户id
     */
    private String tenantId;

    /**
     * 是否为自定义配置, 如果是自定义的, 可以在后管列表中查询与编辑
     */
    private Boolean isCustom;

    /**
     * 状态, 启用/禁用, 同一个组下只能使能一个
     * @see ConfigCons.Status
     */
    private String status = ConfigCons.Status.DISABLE;
}
